package com.wk.arth.od;

import java.util.*;

/**
 * 食物游戏
 * 7 节点数
 * 0 1 8 编号 父id 食物值
 * 1 -1 -2
 * 2 1 9
 * 4 0 -2
 * 5 4 3
 * 3 0 -3
 * 6 2 -3
 * ==>9 最大食物值
 * 任选一个点开始，主动结束或者没有传送门
 * @author wukai
 * @date 2023/5/8 13:33
 */
public class ShiwuYouxi {
    private static int ans = 0;
    private static Map<Integer, List<int[]>> map = new HashMap<>();
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int m = Integer.valueOf(sc.nextLine());
        int arr[][] = new int[m][3];
        for(int i=0;i<m;i++){
            Integer[] item = Arrays.stream(sc.nextLine().split(" ")).map(Integer::valueOf).toArray(Integer[]::new);
            arr[i][0] = item[0];
            arr[i][1] = item[1];
            arr[i][2] = item[2];
        }
        getResult(arr);
        System.out.println(ans);
    }

    private static void getResult(int[][] arr) {
        int[] root = null;
        for(int i=0;i<arr.length;i++){
            int[] item = arr[i];
            if(item[1] == -1){
                root = item;
                continue;
            }
            if(map.containsKey(item[1])){
                map.get(item[1]).add(item);
            }else {
                List<int[]> list = new ArrayList<>();
                list.add(item);
                map.put(item[1],list);
            }
        }
        dfs(root,0);
    }

    private static void dfs(int[] cur, int preMax) {
        int curMax = 0;
        if(preMax>=0){
            curMax = cur[2]+preMax;
        }else{
            curMax = cur[2];
        }
        ans = Math.max(curMax,ans);
        List<int[]> list = map.get(cur[0]);
        if(list == null){
            return;
        }
        for (int[] item:list){
            dfs(item,curMax);
        }
    }
}
